import {createApp} from 'vue'
import {createRouter, createWebHashHistory, createWebHistory} from 'vue-router'
import {createStore} from 'vuex'
import user from '@/store/modules/user'
import {routers} from '@/router/router'
import App from './App.vue'
import "@/assets/layui/css/layui.css";
// import "@/assets/plugin/bootstrap/css/bootstrap.min.css";
import "@/assets/plugin/font-awesome/css/font-awesome.min.css";
import "@/assets/tabler/tabler.min.css";

// import "@/assets/styles/manage.css";
// import "@/assets/styles/account.css";
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
import * as Icons from "@ant-design/icons-vue";
import sys from "@/store/modules/sys.js";
import {getToken} from "@/utils/auth.js";
import issue from "@/store/modules/issue.js";
import EventBus from "@/utils/eventBus.js";


// main.js


// 1. 定义路由组件.
// 也可以从其他文件导入
// const index = { template: Index }
// const login = { template: Login }
// const register = { template: Register }
// 2. 定义一些路由
// 每个路由都需要映射到一个组件。
// 我们后面再讨论嵌套路由。
const routes = routers

// 3. 创建路由实例并传递 `routes` 配置
// 你可以在这里输入更多的配置，但我们在这里
// 暂时保持简单
export const router = createRouter({
    // 4. 内部提供了 history 模式的实现。为了简单起见，我们在这里使用 hash 模式。
    /**
     * Hash模式，丑，无法使用锚点定位
     * History模式： 需要后端配合，IE9不兼容（可使用强制刷新处理）
     */
    // history: createWebHashHistory(),//Hash
    history: createWebHistory(), //History模式
    routes, // `routes: routes` 的缩写
})

//路由守卫
router.beforeEach((to, from) => {
    console.log('user token',user.state.token)
    console.log('sys token',getToken())
    if(user.state.token){
        console.log('token exist')
        return true
    }
    console.log('token expired')
    if((to.path !== '/' && to.path !== '' && to.path !='/signIn' && to.path != '/signUp' && to.path !='/forgotPassword')){
        console.log('not / path')
        // 返回 false 以取消导航
        return {path:'/'}
        // return false
     }
    // 返回 false 以取消导航
    // return false
})
//创建一个新的store实例
const store = createStore({
    modules:{
        user:user,
        sys:sys,
        issue:issue
    }
})






const app = createApp(App)
app.use(router).use(store).use(Antd)
const icons = Icons;
for (const i in icons){
    app.component(i,icons[i]);
}
app.mount('#app')
